package model.AppModel

import unq.model.Pais
import unq.model.Lugar
import java.util.List
import java.io.Serializable
import java.util.ArrayList
import java.util.Collection
import unq.model.Banco
import unq.model.Biblioteca
import unq.model.Embajada
import unq.model.Club

class EditarPaisAPPModel implements Serializable{
	@Property String nombre
	@Property List<Lugar> lugares = new ArrayList
	@Property List<Pais> conexiones = new ArrayList
	@Property List<String> caracteristicas = new ArrayList
	@Property Collection posiblesLugares = #[new Banco, new Biblioteca, new Embajada, new Club]
	@Property List<Pais> posiblesConexiones = new ArrayList
	@Property String proximaCaracteristica = ""
	@Property Lugar proximoLugar
	@Property Pais proximaConexion

	new(Pais pais) {
		this._nombre = pais.nombre
		pais.lugaresDeInteres.forEach[l|lugares.add(l)]
		pais.conexiones.forEach[c|conexiones.add(c)]
		pais.posiblesConexiones.forEach[c|posiblesConexiones.add(c)]
		pais.caracteristicas.forEach[c|caracteristicas.add(c)]
}	

	def void eliminarLugar(Lugar lugar) {
		this.lugares.remove(lugar)
	}
	def void agregar(){
		this.conexiones.add(proximaConexion)
	}
	def void agregarLugar(Lugar lugar) {
		this.lugares.add(lugar)
	}
    def void agregarConexion(Pais p){
    	this.conexiones.add(p)
    }
    def void eliminarConexion(Pais p){
    	this.conexiones.remove(p)
    }
	def void eliminarCaracteristica(String caracteristica) {
		caracteristicas.remove(caracteristica)
	}

	def void agregarCaracteristica(String caracteristica) {
		caracteristicas.add(caracteristica)
	}
	
	def void agregarCaracteristica() {
		this.caracteristicas.add(this.proximaCaracteristica)
		proximaCaracteristica = ""
	}

}